デバイスがなくても大丈夫!EC2でAWS IoT Greengrassを動かす #reinvent
どうも!大阪オフィスの西村祐二です。
re:Invent期間中にAWS IoT Greengrassに関する多くのアップデートがありました。
しかし、現地にラズパイなどのデバイスを持ってきておらず検証などは日本に戻ってからかなと思っていたのですが、EC2でも動かすことができたので手順をまとめておきます。
どのAMIをつかう?
ドキュメントに対応しているAMIが記載されておりました。
「amzn-ami-hvm-2016.09.1.20170119-x86_64-ebs」を使います。
https://docs.aws.amazon.com/greengrass/latest/developerguide/what-is-gg.html
EC2インスタンスを起動
「amzn-ami-hvm-2016.09.1.20170119-x86_64-ebs」で検索すると対象のAMIがヒットしますので、これでインスタンスを作成します。
セキュリティグループを設定
SSHだけでなく、MQTT用の設定を追加してきます。
EC2インスタンス内での作業
起動ができたらSSHで接続して、AWS IoT Greengrass Coreを動かすための設定をしていきます。
まず、ユーザーとグループを追加します。
sudo adduser --system ggc_user sudo groupadd --system ggc_group
起動時にオペレーティングシステムでハードリンク/ソフトリンク保護を有効にします。
cd /etc/sysctl.d ls sudo nano 00-defaults.conf
ファイルを開いたら、下部に下記を追記します。
fs.protected_hardlinks = 1 fs.protected_symlinks = 1
再起動します。
sudo reboot
設定が反映されているか確認します。
sudo sysctl -a | grep fs.protected
AWS IoT Greengrassを動かすために、Linuxコントロールグループ(cgroup)をマウントする必要があります。そのために、次のスクリプトを展開して実行します。
curl https://raw.githubusercontent.com/tianon/cgroupfs-mount/951c38ee8d802330454bdede20d85ec1c0f8d312/cgroupfs-mount > cgroupfs-mount.sh chmod +x cgroupfs-mount.sh sudo bash ./cgroupfs-mount.sh
AWS IoT Greengrassが実行可能か依存関係のチェックスクリプトを実行します。
sudo yum install git -y git clone https://github.com/aws-samples/aws-greengrass-samples.git cd aws-greengrass-samples cd greengrass-dependency-checker-GGCv1.7.0 sudo ./check_ggc_dependencies
これで問題なければ一旦設定は完了です。次は実際にAWS IoT Greengrass Coreのソフトウェアをインストールして起動してみます。
AWS IoT Greengrass CoreをEC2にインストールして起動する
関連ファイルをDLする
証明書類や、AWS IoT Greengrass Coreのソフトウェアをダウンロードします。
まず、AWS IoTのマネージメントコンソールに移動します。「Greengrass」のグループを選択します。
グループの設定を行います。今回は「MyFirstGroup」とします。
他デフォルトのまま、次へをクリックしていきます。
ダウンロードボタンが出てきたら必ずダウンロードしておきましょう。
今回のEC2のアーキテクチャ的にx86_64なので、Software configurationsは「x86_64」のものをダウンロードします。
ダウンロードしたファイルをEC2へ配置
ここからEC2での作業です。
先程DLしたファイル(greengrass-linux-x86-64-1.7.0.tar.gz、xxxxxxx-setup.tar.gz)をscpやFTPなどを使ってEC2に配置しておきます。
配置したら解凍します。下記コマンドで「/greengrass」にファイルが配置されます
sudo tar -xzvf greengrass-linux-x86-64-1.7.0.tar.gz -C / sudo tar -xzvf <GUID>-setup.tar.gz -C /greengrass
rootCA用の証明書を取得します。
cd /greengrass/certs/ sudo wget -O root.ca.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
EC2でAWS IoT Greengrassを動かす
下記コマンドでgreengrass coreのプロセスを起動します。
cd /greengrass/ggc/core/ sudo ./greengrassd start
ちゃんと起動しているか確認します。
ps aux | grep PID-number
問題なくプロセスが確認できれば、EC2でAWS IoT Greengrassの起動完了です!
さいごに
いかがだったでしょうか。
EC2でAWS IoT Greengrassを動かす方法を紹介しました。
実機でないと確認できないこともあるかと思いますが、ちょっと機能を確認したいときに便利ではないでしょうか。
誰かの参考になれば幸いです。